/**
 * 
 */
var common = {
	Wi: [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ],    // 加权因子   
	ValideCode: [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ],           // 身份证验证位值.10代表X
	reg: /^0?1[3|4|5|8][0-9]\d{8}$/,                           // 手机号码校验正则表达式
	/**
	 * 校验账号是否存在以及是否正确
	 * @param value 账号
	 * @returns {Boolean}
	 */
	isTrueLoginName: function(value){
		if(value == ""){
			return false;
		}else{
			var data = modelDao.checkName(value);
			if(data.msg == "该用户名已存在！"){
				return false;
			}else{
				return true;
			}
		}
	},
	/**
	 * 校验登录密码和确认密码是否一致
	 * @param value1 登录密码
	 * @param value2 确认密码
	 * @returns {Boolean}
	 */
	isTruePwd: function(value1, value2){
		if(value1 == ""){
			return false;
		} else {
			if(value1 == value2){
				return true;
			} else {
				return false;
			}
		}
	},
	/**
	 * 校验验证码是否正确
	 * @param value 验证码
	 * @returns {Boolean}
	 */
	isTrueMap: function(value){
		if(value == ""){
			return false;
		}else{
			var data = modelDao.checkMap(value);
			if(data.msg == "ERROER" || data.msg == "EXPIRE"){
				return false;
			}else if(data.msg == "CORRECT"){
				return true;
			}
		}
	},
	/**
	 * 校验手机号码是否正确
	 * @param value 手机号码
	 * @returns {Boolean}
	 */
	isTrueTelNo: function(value){
		var boss = this;
		
		if(boss.reg.test(value)){
			return true;
		}else{
			return false;
		}
	},
	/**
	 * 验证值是否为空
	 * @param value
	 * @returns {Boolean}
	 */
	isTrueValueNotNull: function(value){
		if(value == ""){
			return false;
		}else{
			return true;
		}
	},
	/**
	 * 根据身份证号码判断用户的性别
	 * @param value 身份证号码
	 * @returns
	 */
	isTrueCardidToSex: function(value){
		var boss = this;
		value = boss.trim(value.replace(/ /g, ""));        // 对身份证号码做处理。包括字符间有空格。   
	    if(value.length == 15){   
	        if(value.substring(14, 15) % 2 == 0){   
	            return '女';   
	        }else{   
	            return '男';   
	        }   
	    }else if(value.length == 18){   
	        if(value.substring(14, 17) % 2 == 0){   
	            return '女';   
	        }else{   
	            return '男';   
	        }   
	    }else{   
	        return null;   
	    }   
	},
	/**
	 * 校验身份证号码是否正确
	 * @param value 身份证号码
	 * @returns {Boolean}
	 */
	isTrueCardId: function(value){
		var boss = this;
		if(value == ""){
			return false;
		}else{
			value = boss.trim(value.replace(/ /g, ""));
			if(value.length == 15){
				boss.isValidityBrithBy15IdCard(value);
			}else if(value.length == 18){
				var cardid = value.split("");                // 得到身份证数组   
		        if(boss.isValidityBrithBy18IdCard(value) && boss.isTrueValidateCodeBy18IdCard(cardid)){   //进行18位身份证的基本验证和第18位的验证
		            return true;   
		        }else {   
		            return false;   
		        }   
			}else{
				return false;
			}
		}
	},
	/**  
	 * 判断身份证号码为18位时最后的验证位是否正确  
	 * @param value 身份证号码数组  
	 * @return  
	 */  
	isTrueValidateCodeBy18IdCard: function(value) { 
		var boss = this;
	    var sum = 0;                             // 声明加权求和变量   
	    if (value[17].toLowerCase() == 'x') {   
	    	value[17] = 10;                    // 将最后位为x的验证码替换为10方便后续操作   
	    }   
	    for ( var i = 0; i < 17; i++) {   
	        sum += boss.Wi[i] * value[i];            // 加权求和   
	    }   
	    var valCodePosition = sum % 11;                // 得到验证码所位置   
	    if (value[17] == boss.ValideCode[valCodePosition]) {   
	        return true;   
	    } else {   
	        return false;   
	    }   
	},
	/**  
	  * 验证18位数身份证号码中的生日是否是有效生日  
	  * @param value 18位书身份证字符串  
	  * @return  
	  */  
	isValidityBrithBy18IdCard: function(value){   
	    var year =  value.substring(6,10);   
	    var month = value.substring(10,12);   
	    var day = value.substring(12,14);   
	    var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));   
	    // 这里用getFullYear()获取年份，避免千年虫问题   
	    if(temp_date.getFullYear() != parseFloat(year)   
	          || temp_date.getMonth() != parseFloat(month) - 1   
	          || temp_date.getDate() != parseFloat(day)){   
	            return false;   
	    }else{   
	        return true;   
	    }   
	},
	/**  
	  * 验证15位数身份证号码中的生日是否是有效生日  
	  * @param value 15位书身份证字符串  
	  * @return  
	  */
	isValidityBrithBy15IdCard: function(value){
		var year =  value.substring(6,8);   
		var month = value.substring(8,10);   
		var day = value.substring(10,12);   
		var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));   
		// 对于老身份证中的年龄则不需考虑千年虫问题而使用getYear()方法   
		if(temp_date.getYear() != parseFloat(year)   
              || temp_date.getMonth() != parseFloat(month) - 1   
              || temp_date.getDate() != parseFloat(day)){   
                return false;   
        }else{   
            return true;   
        }     
	},
	//去掉字符串头尾空格 
	trim: function(value){
		return value.replace(/(^\s*)|(\s*$)/g, "");
	}
};